// pages/chat/chat.js
const app = getApp();
var TIM = require('../../../utils/tim-wx.js');
Page({
  /**
   * 页面的初始数据
   */
  data: {
    list: [],
    showflag: false,
    tim: '',
    lgflag: false,
    noreadnum:''
  },
  //获取通知条数
  tongzhinum(){
    let _this = this;
    wx.request({
      url: app.globalData.myurl, //自己的服务接口地址
      method: "post",
      header: {
        "content-type": "application/x-www-form-urlencoded",
        "token": wx.getStorageSync('token')
      },
      data: {
        cmd: 'notifyNewNum',
        userId: wx.getStorageSync('userId'),
      },
      success(res){
        console.log(res.data.oaNotifyNum);
        _this.setData({
          noreadnum: res.data.oaNotifyNum
        })
      }
    })
  },
  totongzhi() {
    wx.navigateTo({
      url: '/pages/setting/page/tongzhi/tongzhi',
    })
  },
  tokefu(e) {
    var name = e.currentTarget.dataset.name;
    var img = e.currentTarget.dataset.img;
    console.log(img)
    var friendid = e.currentTarget.dataset.friendid;
    wx.navigateTo({
      // url: '/pages/setting/page/chars/chars?friendId=' + friendid + '&friendName=' + name + '&friendAvatarUrl=' + img,
      url: '/pages/setting/page/chars/chars?friendAvatarUrl=' + img + '&friendId=' + friendid + '&friendName=' + name ,
    })
  },

  
  gettime(msg) {
    var msgTime = msg; //得到当前消息发送的时间
    //得到当天凌晨的时间戳
    var timeStamp = new Date(new Date().setHours(0, 0, 0, 0)) / 1000;
    var thisdate;
    var d = new Date(msgTime * 1000); //根据时间戳生成的时间对象
    var min = d.getMinutes();
    var hour = d.getHours();
    //得到时和分，分小于10时，只返回一位数
    if (min < 10) {
      min = "0" + min;
    }
    //得到月份和天  月份一般是从0开始，所以展示出来要+1
    var month = d.getMonth();
    var day = d.getDate();
    //得到时间   当天时间应该只显示时分  当天以前显示日期+时间
    if (timeStamp > msgTime) {
      thisdate = month + 1 + "-" + day + " " + hour + ":" + min;
    } else {
      thisdate = hour + ":" + min;
    }
    // console.log(thisdate,6666666666666666666)
    return thisdate;
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },
  // addd() {
  //   let that = this
  //   // 发送文本消息，Web 端与小程序端相同
  //   // 1. 创建消息实例，接口返回的实例可以上屏
  //   let message = that.tim.createTextMessage({
  //     to: 'onV1H411tgnQI7y70-ZCPtRSXo50',
  //     conversationType: TIM.TYPES.CONV_C2C,
  //     payload: {
  //       text: 'Hello world!'
  //     }
  //   });
  //   // 2. 发送消息
  //   let promise = that.tim.sendMessage(message);
  //   promise.then(function (imResponse) {
  //     // 发送成功
  //     // console.log(imResponse);
  //   }).catch(function (imError) {
  //     // 发送失败
  //     console.warn('sendMessage error:', imError);
  //   });
  // },
  getlist() {
    console.log(7878)
    let that = this
    let promise = that.tim.getConversationList();
    promise.then(function(imResponse) {
      var msglist = imResponse.data.conversationList; // 会话列表，用该列表覆盖原有的会话列表
      console.log(msglist)
      for (let i in msglist) {
        let tuichu = false
        msglist[i].lasttime = that.gettime(msglist[i].lastMessage.lastTime)
        // if( msglist[i].userProfile.userID == 1){
        //   msglist = msglist.splice(i,1)
        // }
        wx.request({
          url: app.globalData.myurl, //自己的服务接口地址
          method: "post",
          header: {
            "content-type": "application/x-www-form-urlencoded",
            "token": wx.getStorageSync('token')
          },
          data: {
            cmd: 'getRectokenInfo',
            userId: msglist[i].userProfile.userID,
            // shopId: msglist[i].lastMessage.fromAccount,
            flag: 0
          },
          success: function success(res) {
            if (res.data.zjstate == 1) {
              setTimeout(function () {
                wx.hideLoading()
                wx.stopPullDownRefresh() //停止下拉刷新
              }, 0)
              if(i == 0){
                setTimeout(function () {
                  wx.showModal({
                    title: '您的账号已在其他设备登录，请重新登录！',
                    showCancel: false, //是否显示取消按钮-----》false去掉取消按钮
                    success: function (res) {
                      if (res.confirm) {
                        tuichu = true
                        wx.clearStorageSync()
                        wx.reLaunch({
                          url: '/pages/login/login',
                        })
                      }else{
                        wx.clearStorageSync()
                        wx.reLaunch({
                          url: '/pages/login/login',
                        })
                      }
                    }
                  })
                }, 0)
              }
              return
            }
            console.log(res, '信息');

            var name = res.data.beans[0].nickName;
            var img = res.data.beans[0].photo;
            // var name = '';
            // var img = '';
            msglist[i].name = name;
            msglist[i].img = img;
            that.setData({
              list: msglist,
              showflag: true,
              lgflag: true
            })
            console.log(msglist)

          },
          fail(err) {
            setTimeout(function () {
              wx.hideLoading()
              wx.stopPullDownRefresh() //停止下拉刷新
            }, 0)
            setTimeout(function () {
              wx.showToast({
                title: '网络错误，稍后重试',
                icon: 'none',
                duration: 1500
              })
            }, 0)
          }
        });
        if(tuichu){
          break
        }
      }
      wx.hideLoading()
    }).catch(function(imError) {
      console.warn('getConversationList error:', imError); // 获取会话列表失败的相关信息
    });
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {
    this.tongzhinum()
    setTimeout(function() {
      wx.showLoading({
        title: '加载中',
      })
    }, 0)
    let that = this
    var options = {
      SDKAppID: 1400437598 // 接入时需要将0替换为您的即时通信应用的 SDKAppID
    };
    // 创建 SDK 实例，TIM.create() 方法对于同一个 SDKAppID 只会返回同一份实例
    var tim = TIM.create(options);
    this.tim = tim
    tim.setLogLevel(1);
    // 将腾讯云对象存储服务 SDK （以下简称 COS SDK）注册为插件，IM SDK 发送文件、图片等消息时，需要用到腾讯云的 COS 服务
    // HTML5 环境，注册 COS SDK
    // tim.registerPlugin({ 'cos-js-sdk': COS });

    // 微信小程序环境，注册 COS SDK
    //tim.registerPlugin({'cos-wx-sdk': COS}); // 微信小程序环境请取消本行注释，并注释掉 tim.registerPlugin({'cos-js-sdk': COS});

    // 监听事件，如：
    tim.on(TIM.EVENT.SDK_READY, function(event) {
      // console.log(event.name, '收到离线消息和会话列表同步完毕通知')
      // 收到离线消息和会话列表同步完毕通知，接入侧可以调用 sendMessage 等需要鉴权的接口
      // event.name - TIM.EVENT.SDK_READY

    });


    tim.on(TIM.EVENT.CONVERSATION_LIST_UPDATED, function(event) {
      // 收到会话列表更新通知，可通过遍历 event.data 获取会话列表数据并渲染到页面
      // event.name - TIM.EVENT.CONVERSATION_LIST_UPDATED
      // event.data - 存储 Conversation 对象的数组 - [Conversation]
    });

    tim.on(TIM.EVENT.GROUP_LIST_UPDATED, function(event) {
      // 收到群组列表更新通知，可通过遍历 event.data 获取群组列表数据并渲染到页面
      // event.name - TIM.EVENT.GROUP_LIST_UPDATED
      // event.data - 存储 Group 对象的数组 - [Group]
    });

    tim.on(TIM.EVENT.GROUP_SYSTEM_NOTICE_RECEIVED, function(event) {
      // 收到新的群系统通知
      // event.name - TIM.EVENT.GROUP_SYSTEM_NOTICE_RECEIVED
      // event.data.type - 群系统通知的类型，详情请参见 GroupSystemNoticePayload 的 <a href="https://imsdk-1252463788.file.myqcloud.com/IM_DOC/Web/Message.html#.GroupSystemNoticePayload"> operationType 枚举值说明</a>
      // event.data.message - Message 对象，可将 event.data.message.content 渲染到到页面
    });

    tim.on(TIM.EVENT.PROFILE_UPDATED, function(event) {
      // 收到自己或好友的资料变更通知
      // event.name - TIM.EVENT.PROFILE_UPDATED
      // event.data - 存储 Profile 对象的数组 - [Profile]
    });

    tim.on(TIM.EVENT.BLACKLIST_UPDATED, function(event) {
      // 收到黑名单列表更新通知
      // event.name - TIM.EVENT.BLACKLIST_UPDATED
      // event.data - 存储 userID 的数组 - [userID]
    });

    tim.on(TIM.EVENT.ERROR, function(event) {
      // console.log(event.data.message, '错误信息')
      // 收到 SDK 发生错误通知，可以获取错误码和错误信息
      // event.name - TIM.EVENT.ERROR
      // event.data.code - 错误码
      // event.data.message - 错误信息
    });

    tim.on(TIM.EVENT.SDK_NOT_READY, function(event) {
      // 收到 SDK 进入 not ready 状态通知，此时 SDK 无法正常工作
      // event.name - TIM.EVENT.SDK_NOT_READY
    });

    tim.on(TIM.EVENT.KICKED_OUT, function(event) {
      // 收到被踢下线通知
      console.log(event.name, event.data.type, '被踢了')
      // event.name - TIM.EVENT.KICKED_OUT
      // event.data.type// - 被踢下线的原因，例如 TIM.TYPES.KICKED_OUT_MULT_ACCOUNT 多账号登录被踢
    });
    // 开始登录
    // tim.login({ userID: '923d4f011bcd4cd29a5ef903d2d6ad21', userSig: '' });
    let promise = tim.login({
      // userID: 'fbc0b17489cc4c139c70c3bc01ee41ca',
      // userSig: 'eJxFkFFrgzAUhf*LrxvrjcbaDPbgnENlbtQqlL2IJjcluNqgqasd**910rLX77uHw7k-Vv62eai0VqKsTOl0wnq0wLqfMZ606rCspMFuwsR1XRvgZgfsenVoJ2EDcYntAPxLJbA1Sqo5KGsONfHoinFOOXEY94A7EySIlPDqmunVbjpOwyKIXxbbROP3GGGw2aqa6mSdfe7Sr4zF5*L1aNbD8rQ3d-2Qjr4K-UE-xy1n2Du8y0fpv4dn2cQ6FYWOsiaMumCRJyKVH7R4upWJppxn-w2jADa4jNGrNGqP82APVksK3o1XnB*OrSnNqHH*0*8FVMZgWg__'
      userID: wx.getStorageSync('userId'),
      userSig: wx.getStorageSync('userSig')
    });
    promise.then(function(imResponse) {
      console.log(imResponse.data, '登录成功'); // 登录成功
      setTimeout(function() {
        that.getlist()
        // console.log(5)
      }, 1000)
      // wx.hideLoading()
      that.setData({
        lgflag: true
      })
    }).catch(function(imError) {
      console.warn('login error:', imError); // 登录失败的相关信息
    });
    tim.on(TIM.EVENT.MESSAGE_RECEIVED, function (event) {
      // console.log(event.data, '收到推送的私聊、群聊、群提示、群系统通知的新消息')
      that.getlist()
      // 收到推送的私聊、群聊、群提示、群系统通知的新消息，可通过遍历 event.data 获取消息列表数据并渲染到页面
      // event.name - TIM.EVENT.MESSAGE_RECEIVED
      // event.data - 存储 Message 对象的数组 - [Message]
    });

  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {
    let that = this
    let promise = that.tim.logout();
    promise.then(function(imResponse) {
      console.log(imResponse.data, '登出'); // 登出成功
      that.setData({
        tim: '',
        lgflag: false
      })
    }).catch(function(imError) {
      console.warn('logout error:', imError);
    });
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {
    let that = this
    let promise = that.tim.logout();
    promise.then(function(imResponse) {
      console.log(imResponse.data, '登出'); // 登出成功
      that.setData({
        tim: '',
        lgflag: false
      })
    }).catch(function(imError) {
      console.warn('logout error:', imError);
    });
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})